Power and performance management has been an important aspect in the design and usage of computing systems. Even with the significant advancement in computing technology, inefficient power usage in computing systems remains a concern in many situations.
Conventionally, power management in a computing system, such as a server, is accomplished by hardware. For example, additional hardware (such as a variable impedance circuit) is added to one conventional computing system to modify the overall load of the computing system in order to reduce power consumption. In another example, the settings of existing hardware components in one conventional computing system are adjusted in order to achieve the appropriate level of power consumption.
Because many of the conventional power management techniques utilize hardware to adjust the level of power usage, it is generally difficult, if not infeasible, for software running on a conventional computing system to directly manage power in order to tailor power delivery and usage to the needs of applications running on the computing system, let alone balancing power consumption against performance of the computing system.